package game.ai.scene;

import game.ai.aoi.AoiSpace;

import java.util.Collection;

public interface IScene {

	public AoiSpace getAoiSpace();

	public Collection<SceneObject> getAllObjs();

	public <T> Collection<T> getObjsByType(byte objType);

	public SceneObject getObjById(int id);

	/**
	 * 得到所有类型的场景可见对象
	 * 
	 * @return
	 */
	public <T> Collection<T> getSceneObjByType(byte type);

	/**
	 * 进入场景,在指定的坐标点出现。<br>
	 * 
	 * @param player
	 * @param x
	 * @param y
	 * @return
	 */
	public void enterScene(SceneHero player);

	public void enterScene(SceneMonster scenemonster);

	/**
	 * 掉落物品添加到场景里，并且对视野内的玩家进行广播
	 * 
	 * @param sceneDropGood
	 */
	// public void enterScene(SceneDropGood sceneDropGood);

	/**
	 * newScene 用于标明,角表离线,是否是下线,还是切换场景,这两种情况的处理是不同的
	 */
	public void leaveScene(SceneHero player, IScene newScene);

	/**
	 * 从当前地图区域 和 当前场景中 移除掉怪物
	 * 
	 * @param sceneMonster
	 */
	public void leaveScene(SceneMonster sceneMonster);

	/**
	 * 从当前地图区域 和 当前场景中 移除掉掉落物品
	 * 
	 * @param sceneMonster
	 */
	// public void leaveScene(SceneDropGood sceneDropGood);

}
